/* 
 * File:   Types.hpp
 * Author: Aaron
 *
 * Created on 20. Februar 2011, 17:20
 */

#ifndef TYPES_HPP
#define	TYPES_HPP


// -- Common Includes
#include <string>
#include <vector>


// -- Common Usings
using std::string;
using std::vector;


/**
 * Contains wrapper classes for using OpenCL on the local machine.
 */
namespace OpenCLWrapping
{
    // -- Common
    typedef unsigned int uint32;
    typedef unsigned long long uint64;
    class UnknownError;

    
    // -- Platforms
    class Platform;


    // -- Devices
    class Device;   
    namespace DeviceType
    {
        /**
         * Represents the various OpenCL device types. This enum can be used as
         * bitfield.
         */
        enum DeviceType
        {
            Default     = (1 << 0),
            CPU         = (1 << 1),
            GPU         = (1 << 2),
            Accelerator = (1 << 3),
            All         = 0xFFFFFFFF
        };
    }
    class NoDefaultDeviceException;


    // -- Contexts
    
}


#endif	/* TYPES_HPP */

